// let o = { sing: "sing" };
// // 如何将this指向o呢？
// let obj = {
//   name: "刘德华",
//   say: function (...args) {
//     console.log(args);
//     console.log(this); // this -> o
//   },
// };
// obj.say.apply(o, [o.sing, 1, 2, 3]);

// 自己实现一个apply方法
Function.prototype.myApply = function (context, args) {
  context = context ? context : window;
  context.fn = this;
  if (!args) {
    context.fn();
  } else if (Array.isArray(args)) {
    context.fn(...args);
  } else {
    return TypeError("args is not a Array");
  }
  delete context.fn;
};
let o = { sing: "sing" };
// 如何将this指向o呢？
let obj = {
  name: "刘德华",
  say: function (...args) {
    console.log(args);
    console.log(this); // this -> o
  },
};
obj.say.myApply(o, [o.sing, 1, 2, 3]);
